It is generally desired to improve load balancing within a computer network, particularly for certain virtual interface (e.g., tunnel, pseudowire, softwire) scenarios. Specifically, it is often the case in a computer network that certain links of the network are over-utilized, while others remain under-utilized. Load balancing typically consists of using some algorithm to divide the traffic of the network among a plurality of paths to reach the destinations, in order to distribute the load on the links and nodes of the network. In addition, most load balancing techniques conventionally ensure that a traffic flow traverses the same path in order to avoid packet mis-ordering or other problems.
For networks where virtual interfaces are used, it can be difficult if not impossible to identify a particular flow, since the traffic is generally encapsulated according to the virtual interface's protocol. One solution is to load balance based on the individual virtual interfaces (e.g., each interface uses an independent path) or their protocols (e.g., each virtual interface protocol uses an independent path). However, these arrangements may lack versatility under certain network configurations, and may be limited in terms of path diversification given the differentiating factors used for load balancing division. Further, configuring all of the nodes within a computer network to understand a new load balancing algorithm may be costly, cumbersome, and inconvenient.